Forward error correction (FEC) is a technique for controlling errors in data transmission over unreliable or noisy communication channels, such as wireless communications channels. In FEC, a transmitter redundantly encodes a message using an error-correcting code (ECC). The receiver may then detect errors using the redundancy. FEC techniques include convolution codes, block codes, concatenation codes, turbo codes, fountain codes, low density parity-check (LDPC) codes, and polar codes.